package SecondeStage.FanShe;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class GetClass {
    public static void main(String[] args) throws Exception {
        // 获取Class对象的6种方式
        //1. 多用于配置文件，读取类全路径然后加载类
        Properties properties = new Properties();
        properties.load(new FileInputStream("FengJiDuo\\src\\re.properties"));
        String classfullpath = properties.get("classfullpath").toString();
        Class cls1 =Class.forName(classfullpath);
        System.out.println(cls1);

        //2. 类名.class，多用于参数传递
        Class cls2 = Cat.class;
        System.out.println(cls2);

        //3. 已知某个类的实例，通过调用该实例的getClass()方法获取Class对象
        Cat cat = new Cat();
        Class cls3 = cat.getClass();

        //4. 通过类加载器来获取到类的Class对象
        // （1）先得到类加载器 cat
        ClassLoader classLoader = cat.getClass().getClassLoader();
        // (2)通过类加载器得到Class对象
        Class cls4 = classLoader.loadClass(classfullpath);
        System.out.println(cls4);

        //5. 基本数据类型按如下方式得到Class类对象
        Class<Integer> integerClass = int.class;
        System.out.println(integerClass);

        //6. 基本数据类型对应的包装类，可以通过 .TYPE 得到Class类对象
        Class<Integer> type1 = Integer.TYPE;
        System.out.println(type1);
    }
}
